home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
001-010
/
amok01
/
fish
/
fishinit.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
3KB
|
155 lines
IMPLEMENTATION MODULE FishInit;
FROM SYSTEM IMPORT SHIFT,ADDRESS,ADR,CAST,BITSET;
FROM Graphics IMPORT AnimObPtr,AnimCompPtr,VSpriteFlags,VSpriteFlagSet,
RastPortPtr,BobPtr,VSpritePtr,BobFlags,BobFlagSet,GetGBuffers,
InitGMasks,ViewPortPtr,AddAnimOb,SetRGB4,FreeGBuffers;
FROM GfxMacros IMPORT InitAnimate;
FROM FishData IMPORT fish1Comp,fish1Bob;
CONST
ANFRACSIZE = 6;
ALLSTART = 0;
ANIMHALF = 20H;
DEPTH = 3;
F = {0..3};
(*
VAR
color,color1,color2: ARRAY[0..7] OF INTEGER;
fishOb;
GInfo: GelsInfoPtr;
head,tail: VSpritePtr;
boom: CollTablePtr;
*)
VAR
anOb: AnimObPtr;
color92: ARRAY[0..7] OF INTEGER;
timers : ARRAY[0..16] OF INTEGER;
i : CARDINAL;
Index : INTEGER;
xtranslations : ARRAY[0..16] OF INTEGER;
ytranslations : ARRAY[0..16] OF INTEGER;
XVel : ARRAY[0..0] OF INTEGER;
YVel : ARRAY[0..0] OF INTEGER;
PROCEDURE fish1Routine(Ob: AnimObPtr): BOOLEAN;
BEGIN
WITH Ob^ DO
IF anX>=SHIFT(320,ANFRACSIZE) THEN anX := 0 END;
END;
RETURN TRUE;
END fish1Routine;
PROCEDURE extrainit(animKey: AnimObPtr; addFlag: BOOLEAN; wR: RastPortPtr);
VAR
acptr,seqptr,sseqptr: AnimCompPtr;
btr: BobPtr;
i,depth,sw,sh: INTEGER;
iptr,i2ptr,pptr: ADDRESS;
ibufsize,pbufsize: INTEGER;
(* animOb inits *)
BEGIN
anOb := animKey;
anOb^.anX := SHIFT(ALLSTART,ANFRACSIZE);
anOb^.anY := 0;
anOb^.xAccel := 0;
anOb^.yAccel := 0;
anOb^.clock := 0;
acptr := anOb^.headComp;
WHILE acptr#NIL DO
acptr^.animBob^.bobVSprite^.x :=
SHIFT(anOb^.anX + xtranslations[Index] + ANIMHALF,-ANFRACSIZE);
acptr^.animBob^.bobVSprite^.y :=
SHIFT(anOb^.anY + ytranslations[Index] + ANIMHALF,-ANFRACSIZE);
sseqptr := acptr;
seqptr := acptr;
REPEAT
WITH seqptr^ DO
animBob^.flags := BobFlagSet{bobIsComp};
animBob^.bobVSprite^.flags := VSpriteFlagSet{saveBack,overlay};
timeSet := timers[Index];
xTrans := xtranslations[Index];
yTrans := ytranslations[Index];
animBob^.bobVSprite^.planeOnOff := 10H;
INC(Index);
END;
seqptr := seqptr^.nextSeq;
UNTIL (seqptr=NIL) OR (seqptr=sseqptr);
acptr := acptr^.nextComp;
END;
IF NOT(GetGBuffers(anOb, wR, TRUE)) THEN HALT END;
InitGMasks(anOb);
END extrainit;
PROCEDURE animinit(animKey: AnimObPtr;vp: ViewPortPtr;
wR: RastPortPtr);
VAR
i: INTEGER;
BEGIN
Index := 0;
fishOb.xVel := XVel[0];
fishOb.yVel := YVel[0];
fishOb.headComp := ADR(fish1Comp);
fish1Bob.before := NIL;
fish1Bob.after := NIL;
InitAnimate(animKey);
extrainit(ADR(fishOb), TRUE, wR);
AddAnimOb(ADR(fishOb), animKey,wR);
FOR i := 0 TO 7 DO
SetRGB4(vp,i ,
CAST(INTEGER, CAST(BITSET,SHIFT(color92[i],-8)) * F),
CAST(INTEGER, CAST(BITSET,SHIFT(color92[i],-4)) * F),
CAST(INTEGER, CAST(BITSET,color92[i] ) * F));
END;
END animinit;
PROCEDURE freeanimobj(RPort: RastPortPtr);
BEGIN
FreeGBuffers(ADR(fishOb),RPort,TRUE);
END freeanimobj;
BEGIN
color92[0] := 028FH;
color92[1] := 0FFCH;
color92[2] := 0FBFH;
color92[3] := 0FD0H;
color92[4] := 0F30H;
color92[5] := 090DH;
color92[6] := 00FFH;
color92[7] := 00D9H;
FOR i:=0 TO 16 DO
timers[i] := 1;
xtranslations[i] := SHIFT(0,ANFRACSIZE);
ytranslations[i] := SHIFT(0,ANFRACSIZE);
END;
XVel[0] := SHIFT(4,ANFRACSIZE);
YVel[0] := SHIFT(0,ANFRACSIZE);
END FishInit.